package com.bf.electroplating.job;

import com.bf.electroplating.service.IRainfallMonthlyDataSyncService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 雨水月度数据同步定时任务
 * 
 * @author system
 * @since 2025-01-11
 */
@Slf4j
@Component
public class RainfallMonthlyDataSyncJob {

    @Autowired
    private IRainfallMonthlyDataSyncService rainfallMonthlyDataSyncService;

    /**
     * 每天凌晨1点执行一次雨水月度数据同步
     * 定时任务：每天凌晨1点执行
     */
    @Scheduled(cron = "0 0 1 * * ?")
    public void syncRainfallMonthlyDataDaily() {
        try {
            log.info("开始执行雨水月度数据每日同步任务");
            rainfallMonthlyDataSyncService.syncAllRainfallMonthlyData();
            log.info("雨水月度数据每日同步任务执行完成");
        } catch (Exception e) {
            log.error("雨水月度数据每日同步任务执行异常", e);
        }
    }

    /**
     * 每周日凌晨4点执行一次深度同步
     * 定时任务：每周日凌晨4点执行
     */
    @Scheduled(cron = "0 0 4 ? * SUN")
    public void syncRainfallMonthlyDataWeekly() {
        try {
            log.info("开始执行雨水月度数据每周深度同步任务");
            rainfallMonthlyDataSyncService.syncAllRainfallMonthlyData();
            log.info("雨水月度数据每周深度同步任务执行完成");
        } catch (Exception e) {
            log.error("雨水月度数据每周深度同步任务执行异常", e);
        }
    }

    /**
     * 每月1号凌晨5点执行一次月度数据同步
     * 定时任务：每月1号凌晨5点执行
     */
    @Scheduled(cron = "0 0 5 1 * ?")
    public void syncRainfallMonthlyDataMonthly() {
        try {
            log.info("开始执行雨水月度数据每月同步任务");
            rainfallMonthlyDataSyncService.syncAllRainfallMonthlyData();
            log.info("雨水月度数据每月同步任务执行完成");
        } catch (Exception e) {
            log.error("雨水月度数据每月同步任务执行异常", e);
        }
    }
}
